;10-6.asm显示单词Well,显示模式640*480,16色图形
data segment
;字颜色:1蓝，2绿，3浅蓝，4红，5紫，6黄，7灰白，8灰
;===第1行====================================================
well_s  db 3 dup(0dch),20h,3 dup(0dch),2 dup(20h),3 dup(0dch),0ffh
;===第2-7行同示例10-4=========================================
db	00H
;============================================================
well_col db ?		        
data ends              
code segment
   assume cs:code,ds:data
start:
    mov ax,data
    mov	ds,ax
    mov	si,0
    mov ah,0				;设置显示模式	
    mov al,12h			  ;640*480,16色图形
    int 10h
    mov dh,2				;2行
    mov dl,4				;4列
    mov	well_col,dl	  ;保存起始列位置
    mov bl,05h			  ;紫色
    mov	ah,2			 ;置光标2行4列
    mov	bh,0
    int	10h
    mov si,offset well_s
    call graph_block		;调用写字符块子程序
    mov ah,1				;暂停，键入任意键继续
    int 21h
    mov ah,0				;设置返回后显示模式
    mov al,03h			  ;80*25,16色标准文本模式
    int 10h
    mov	ah,4ch
    int	21h                         
;-------------------  				
graph_block   proc   near   
write:           
    mov	al,[si]			 ;取出well_s中的矩形块
    inc si
    cmp	al,0ffh			 ;一行结束
    je	next1
    cmp	al,0				;所有行显示完了?
    jz	exit
    mov	ah,9				;写AL中字符块
    mov	bh,0
    mov	cx,1				;写1个字符
    int	10h
    inc	dl
    mov	ah,2		
    mov	bh,0
    int	10h				;光标移到下一位置              		
    jmp	write                           
next1:	
    inc	dh
    mov	dl,well_col		 ;下一行起始列位置
    mov	ah,2				;置光标
    mov	bh,0
    int	10h
    jmp	write
exit:
    ret              	
graph_block endp
  code ends
       end start   